# -*- coding: UTF-8 -*-
import time
import datetime
from tools.MailSmtp import Message, show_info
from tools.Request_General import BaseAPI
from pyLib.databaseManage import SYS_DATABASE
from pyLib.LogManage import LOG


class SystemServer(BaseAPI):
    """
    系统服务相关的接口
    """

    def create_space(self, payload):
        """
        创建空间
        """
        r = self.request_send(json=payload)
        return r

    def connection_test(self, payload):
        """
        连接mysql测试
        """
        r = self.request_send(json=payload)
        return r

    def page(self, params):
        """
        空间查询 分页
        """
        r = self.request_send(params=params)
        return r

    def datasource(self, params):
        """
        查询空间数据库信息
        """
        r = self.request_send(params=params)
        return r

    def module_exist(self, payload):
        """
        根据组件ID判断组件是否存在
        """
        r = self.request_send(json=payload)
        return r

    def get_server_name(self, payload):
        """
        根据组件ID获取组件版本（2位）与服务名
        """
        r = self.request_send(json=payload)
        return r

    def space_module_relation(self, payload):
        """
        空间与组件关联关系维护
        """
        r = self.request_send(json=payload)
        return r

    def space_register_module(self, params):
        """
        已登记组件列表查询（查询空间全部可以注册的组件信息）
        """
        r = self.request_send(params=params)
        return r

    def module_relation(self, payload):
        """
        查询组件关联的其他组件
        """
        r = self.request_send(json=payload)
        return r

    def module_relation_module(self, params):
        """
        查询组件与协议查询关联的其他组件

        """
        r = self.request_send(params=params)
        return r

    def delete_space_module_relation(self, payload):
        """
        删除空间与组件关联关系
        """
        r = self.request_send(json=payload)
        return r

    def get_operate_notice(self, params):
        """
        根据moduleId查询后置配置信息
        """
        r = self.request_send(params=params)
        return r

    def install_module(self, payload):
        """
        组件登记基本信息
        """
        r = self.request_send(json=payload)
        return r

    def module_ele_info(self, params):
        """
        根据moduleId查询基本信息接口
        """
        r = self.request_send(params=params)
        return r

    def module_enable(self, payload):
        """
        更新组件是否启用空间组件注册
        """
        r = self.request_send(json=payload)
        return r

    def module_info_list(self, params):
        """
        批量查询组件信息
        """
        r = self.request_send(params=params)
        return r

    def module_relation_module_list(self, payload):
        """
        根据协议与协议号批量查询有哪些组件支持
        """
        r = self.request_send(json=payload)
        return r

    def add_language(self, payload):
        """
        添加多语言接口
        """
        r = self.request_send(json=payload)
        return r

    def get_language(self, payload):
        """
        获取多语言
        """
        r = self.request_send(json=payload)
        return r

    def module_info(self, params):
        """
        获取系统中所有组件信息
        """
        r = self.request_send(params=params)
        return r

    def check_module(self, params):
        """
        组件注册时校验组件是否可用
        """
        r = self.request_send(params=params)
        return r

    def module_dependence(self, params):
        """
        获取组件使用协议对应依赖的组件
        """
        r = self.request_send(params=params)
        return r

    def get_space_module_relation(self, params):
        """
        获取组件在哪些空间注册过以及注册时间和启用状态
        """
        r = self.request_send(params=params)
        return r

    def os_language(self, payload):
        """
        平台语言条件查询接口
        """
        r = self.request_send(json=payload)
        return r

    def get_os_language(self, params):
        """
        查询指定语言code对应名称描述接口
        """
        r = self.request_send(params=params)
        return r

    def query_mod_name(self, payload, params):
        """
        根据不同条件查询组件信息接口
        """
        r = self.request_send(json=payload, params=params)
        return r

    def query_spa_info(self, params):
        """
        根据企业编码查询空间信息接口
        """
        r = self.request_send(params=params)
        return r

    def get_mod_def_language(self, params):
        """
        获取组件支持的默认语言接口
        """
        r = self.request_send(params=params)
        return r

    def get_up_info(self, payload):
        """
        根据组件类型和可升级版本获取组件升级信息接口
        """
        r = self.request_send(json=payload)
        return r

    def query_tenant_code(self):
        """
        查询空间的公司编码
        """
        r = self.request_send()
        return r

    def get_user_det(self, params):
        """
        查询用户及企业信息 存在
        """
        r = self.request_send(params=params)
        return r

    def batch_bind(self, payload):
        """
        批量绑定空间与用户关联关系 存在
        """
        r = self.request_send(json=payload)
        return r

    def unbind(self, params):
        """
        解除空间与用户关联关系 存在
        """
        r = self.request_send(params=params)
        return r

    def permission_info_delete_all(self, params):
        """
        根据id清除已有的用户及用户组
        """
        r = self.request_send(params=params)
        return r

    def permission_info_list(self):
        """
        元素新建权限配置列表查询
        """
        r = self.request_send()
        return r

    def list_by_user(self, payload):
        """
        查询个人新建权限配置
        """
        r = self.request_send(json=payload)
        return r

    def query_by_id(self, params):
        """
        根据id查询某个新建权限已有的用户及用户组
        """
        r = self.request_send(params=params)
        return r

    def save(self, payload):
        """
        保存新建元素列表
        """
        r = self.request_send(json=payload)
        return r

    def save_create_element_info(self, payload):
        """
        保存新建元素权限分配记录表
        """
        r = self.request_send(json=payload)
        return r

    def user_batch_bind(self, params):
        """
        批量绑定空间与用户关联关系 存在
        """
        r = self.request_send(params=params)
        return r

    def by_company(self, payload):
        """
        绑定企业空间与用户关联关系
        """
        r = self.request_send(json=payload)
        return r

    def check_have_admin(self, params):
        """
        校验所有企业中是否有企业管理员角色
        """
        r = self.request_send(params=params)
        return r

    def get_user_detail(self, params):
        """
        查询用户及企业信息 存在
        """
        r = self.request_send(params=params)
        return r

    def get_userdetail(self, params):
        """
        根据用户id查询用户信息
        """
        r = self.request_send(params=params)
        return r

    def list_by_space(self, params):
        """
        查询空间用户组信息(可包含关键字)分页 -- 2.8.0版本
        """
        r = self.request_send(params=params)
        return r

    def all_groups(self, params):
        """
        查询空间所有用户组
        """
        r = self.request_send(params=params)
        return r

    def query_batch(self, params):
        """
        根据用户id列表批量查询空间用户
        """
        r = self.request_send(params=params)
        return r

    def by_user_ids(self, payload):
        """
        根据用户id列表批量查询空间用户
        """
        r = self.request_send(json=payload)
        return r

    def by_user_ids_post(self, payload):
        """
        根据用户id列表批量查询用户信息
        """
        r = self.request_send(json=payload)
        return r

    def user_unbind(self, payload):
        """
        解除空间与用户关联关系 存在
        """
        r = self.request_send(json=payload)
        return r

    def add_app_admin(self, params):
        """
        给app创建者增加app管理员角色
        """
        r = self.request_send(params=params)
        return r

    def user_exist(self, params):
        """
        判断用户/用户组是否已存在当前空间
        """
        r = self.request_send(params=params)
        return r

    def user_role(self, params):
        """
        判断是用户否分配角色
        """
        r = self.request_send(params=params)
        return r

    def get_user_permission_info(self, payload):
        """
        是否为管理员接口
        """
        r = self.request_send(json=payload)
        return r

    def group_info_list_by_space(self, payload):
        """
        分页查询用户组列表接口（提供给账号中心使用）--依赖平台2.5.18版本
        """
        r = self.request_send(json=payload)
        return r

    def group_role_add(self, payload):
        """
        新建用户组分配角色（提供给账号中心使用）
        """
        r = self.request_send(json=payload)
        return r

    def group_role_batch_add(self, payload):
        """
        批量用户/用户组分配角色
        """
        r = self.request_send(json=payload)
        return r

    def group_role_update(self, payload):
        """
       编辑用户组分配角色（提供给账号中心使用）
        """
        r = self.request_send(json=payload)
        return r

    def group_remove(self, payload):
        """
        删除用户组
        """
        r = self.request_send(json=payload)
        return r

    def invite_group_batch(self, payload):
        """
        批量导入用户组与空间关系（增量全量）（提供给账号中心使用）
        """
        r = self.request_send(json=payload)
        return r

    def invite_user_batch(self, payload):
        """
        批量导入用户与空间关系（增量全量)（提供给账号中心使用）
        """
        r = self.request_send(json=payload)
        return r

    def space_invite_group(self, payload):
        """
        空间邀请用户组接口（提供给账号中心使用）
        """
        r = self.request_send(json=payload)
        return r

    def space_invite_user(self, payload):
        """
        空间邀请用户接口（提供给账号中心使用）
        """
        r = self.request_send(json=payload)
        return r

    def batch_add_check(self, payload):
        """
        批量用户/用户组分配角色前校验接口
        """
        r = self.request_send(json=payload)
        return r

    def user_info_list_by_space(self, payload):
        """
        分页查询用户列表接口（提供给账号中心使用）--依赖平台2.5.18版本
        """
        r = self.request_send(json=payload)
        return r

    def user_permission_info(self, params):
        """
        是否为管理员接口
        """
        r = self.request_send(params=params)
        return r

    def user_role_add(self, payload):
        """
        分配用户角色接口（提供给账号中心使用）
        """
        r = self.request_send(json=payload)
        return r

    def user_remove(self, params):
        """
        从空间移除用户
        """
        r = self.request_send(params=params)
        return r

    def sys_version(self):
        """
        平台版本
        """
        r = self.request_send()
        return r

    def email_send(self):
        """
        删除邮件发送
        """
        r = self.request_send()
        return r

    def sms_send(self):
        """
        删除短信发送
        """
        r = self.request_send()
        return r

    def app_callback(self, payload):
        """
        空间删除应用回调
        """
        r = self.request_send(json=payload)
        return r

    def space_del(self, payload, del_space_id=None):
        """
        删除空间
        """
        r = self.request_send(data=payload)
        if del_space_id:
            SYS_DATABASE.execute_sql(f"DELETE FROM `sys_space_info` where deleted=1 AND id='{del_space_id}'")
            LOG.info(f"删除sys_space_info表中{del_space_id}空间信息")
        return r

    def job_current_list(self, pay):
        """
        获取作业列表
        """
        r = self.request_send(json=pay)
        return r


def parsing(spa_name=None):
    """
    解析邮件
    """
    for i in range(1, 301):
        try:
            time.sleep(1)
            if i % 15 == 0:
                # print(i)
                data = show_info(Message().receive())
                if str(data["Date"][:2]).strip() in str(datetime.datetime.now().day).strip() and "sre.devops" in data[
                    "From"] and spa_name in data["Text"]:
                    return data["Text"].split("验证码为：")[1][:6]
        except Exception as e:
            return 0


if __name__ == '__main__':
    from application.general_create import COOKIE, APP_ID, SPACE_ID

    headers = {"cookie": COOKIE, "language": "zh-cn", "app": APP_ID, "space": SPACE_ID}
    a = SystemServer(headers)
    r = a.group_remove([])

    print(r.text)
